package JAVA300.第十一章多线程;

/**
 * 取票模拟线程不安全
 */
public class thread_14_synchronized1_unsafe {
    public static void main(String[] args) {
        //一份资源
        Unsafe_web12306 tic = new Unsafe_web12306();
        new Thread(tic,"thread1").start();
        new Thread(tic,"thread2").start();
        new Thread(tic,"thread3").start();
    }
}
class Unsafe_web12306 implements Runnable {

    private int tickets = 10;
    private boolean flag = true;

    @Override
    public void run() {

        while (flag) {
            test();
        }

    }

    //不安全的抢票方法--有负数 还有相同情况
    public void test(){

        if (tickets <0){
            flag =false;
            return;
        }
        //如果有网络延迟等存在并发线程安全的情况
        //模拟网络延迟--存在负数的情况
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(Thread.currentThread().getName() + "--" + tickets--);//获取正在运行线程的名字

    }
}
